/*
    This file is part of Cyclos (www.cyclos.org).
    A project of the Social Trade Organisation (www.socialtrade.org).

    Cyclos is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    Cyclos is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Cyclos; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

 */
package nl.strohalm.cyclos.controls.customization.themes;

import nl.strohalm.cyclos.annotations.Inject;
import nl.strohalm.cyclos.controls.ActionContext;
import nl.strohalm.cyclos.controls.BaseAction;
import nl.strohalm.cyclos.themes.ThemeHandler;

import org.apache.struts.action.ActionForward;
import org.apache.struts.upload.FormFile;

public class ImportThemeAction extends BaseAction {

    private ThemeHandler themeHandler;

    @Inject
    public void setThemeHandler(final ThemeHandler themeHandler) {
        this.themeHandler = themeHandler;
    }

    @Override
    protected ActionForward executeAction(final ActionContext context) throws Exception {
        final ImportThemeForm form = context.getForm();
        final FormFile upload = form.getUpload();
        if (upload != null && upload.getFileSize() > 0) {
            try {
                themeHandler.importNew(upload.getFileName(), upload.getInputStream());
                context.sendMessage("theme.import.successful");
            } catch (final Exception e) {
                return context.sendError("theme.import.error.reading");
            } finally {
                upload.destroy();
            }
        }
        return context.getSuccessForward();
    }

}
